home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / powervww / pvcmd.cpp < prev    next >
C/C++ Source or Header  |  1998-01-05  |  3KB  |  145 lines

  1. //  ____________________________________________________
  2. // |                                                    |
  3. // |  Project:     POWER VIEW INTERFACE                 |
  4. // |  File:        PVCMD.CPP                            |
  5. // |  Compiler:    WPP386 (10.6)                        |
  6. // |                                                    |
  7. // |  Subject:     Commands manager                     |
  8. // |                                                    |
  9. // |  Author:      Emil Dotchevski                      |
  10. // |____________________________________________________|
  11. //
  12. // E-mail: zajo@geocities.com
  13. // URL:    http://www.geocities.com/SiliconValley/Bay/3577
  14.  
  15. #define uses_app
  16.  
  17. #include "PVuses.h"
  18.  
  19. static Tcommands default_commands;
  20. static Tcommands *commands = &default_commands;
  21.  
  22. //Tcommands
  23.  
  24. Tset Tcommands::global;
  25.  
  26. Tcommands::Tcommands( void )
  27. {
  28.   !global;
  29.   local = NULL;
  30. }
  31.  
  32. Tcommands::Tcommands( Tset &_local )
  33. {
  34.   local = &_local;
  35.   if( local == NULL ) return;
  36.   ~*local;
  37.   *local << 0;
  38. }
  39.  
  40. void Tcommands::operator ~ ( void )
  41. {
  42.   if( local != NULL )
  43.   {
  44.     ~*local;
  45.     *local << 0;
  46.   }
  47.   if( this == commands ) commands_changed();
  48. }
  49.  
  50. void Tcommands::operator ! ( void )
  51. {
  52.   if( local != NULL ) !*local;
  53.   if( this == commands ) commands_changed();
  54. }
  55.  
  56. Tcommands& operator << ( Tcommands &set, uint member )
  57. {
  58.   if( member > 255 )
  59.     set.global << ( member & 0x00FF );
  60.   else
  61.     if( set.local != NULL ) *set.local << member;
  62.   if( commands == &set ) commands_changed();
  63.   return set;
  64. }
  65.  
  66. Tcommands& operator >> ( Tcommands &set, uint member )
  67. {
  68.   if( member > 255 )
  69.     set.global >> ( member & 0x00FF );
  70.   else
  71.     if( set.local != NULL ) *set.local >> member;
  72.   if( commands == &set ) commands_changed();
  73.   return set;
  74. }
  75.  
  76. Tcommands& operator << ( Tcommands &set, Tcommands &set1 )
  77. {
  78.   set.global << set1.global;
  79.   if( ( set.local != NULL ) && ( set1.local != NULL ) ) *set.local << *set1.local;
  80.   if( commands == &set ) commands_changed();
  81.   return set;
  82. }
  83.  
  84. Tcommands& operator >> ( Tcommands &set, Tcommands &set1 )
  85. {
  86.   set.global >> set1.global;
  87.   if( ( set.local != NULL ) && ( set1.local != NULL ) ) *set.local >> *set1.local;
  88.   if( commands == &set ) commands_changed();
  89.   return set;
  90. }
  91.  
  92. int operator & ( Tcommands &set, uint member )
  93. {
  94.   if( member > 255 )
  95.     if( set.global & 0 )
  96.       return set.global & ( member & 0x00FF );
  97.     else
  98.       return 0;
  99.   if( ( set.local != NULL ) &&
  100.       ( ( *set.local & 0 ) || ( member < cmUSER00 ) ) )
  101.     return *set.local & member;
  102.   return 0;
  103. }
  104.  
  105. boolean cenabled( uint cmd )
  106. {
  107.   return ( *commands & cmd ) != 0;
  108. }
  109.  
  110. boolean cdisabled( uint cmd )
  111. {
  112.   return ( *commands & cmd ) == 0;
  113. }
  114.  
  115. void cenable( uint cmd )
  116. {
  117.   if( *commands & cmd ) return;
  118.   *commands << cmd;
  119. }
  120.  
  121. void cdisable( uint cmd )
  122. {
  123.   if( !( *commands & cmd ) ) return;
  124.   *commands >> cmd;
  125. }
  126.  
  127. void cstate( uint cmd, boolean enable )
  128. {
  129.   if( enable ) cenable( cmd ); else cdisable( cmd );
  130. }
  131.  
  132. void set_cmd( Tcommands *cmd )
  133. {
  134.   if( cmd != NULL )
  135.     commands = cmd;
  136.   else
  137.     commands = &default_commands;
  138.   commands_changed();
  139. }
  140.  
  141. Tcommands *get_cmd( void )
  142. {
  143.   return commands;
  144. }
  145.